package br.ufc.apsoo.models;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table(name = "servico")
@SequenceGenerator(name = "seq_servico", sequenceName = "seq_servico")
public class Servico {

	@Id
	@Column(name = "id")
	@GeneratedValue(generator = "seq_servico", strategy = GenerationType.AUTO)
	private Long id;

	@NotNull(message = "O campo descrição é obrigatório!")
	@Column(name = "descricao")
	@NotEmpty(message = "O campo descrição é obrigatório!")
	private String descricao;

	@NotNull(message = "O campo valor é obrigatório!")
	@Min(value = 0, message = "O menor valor possível é zero!")
	@Column(name = "valor")
	private BigDecimal valor;

	@Column(name = "ativo")
	private boolean ativo;

	@Transient
	private BigDecimal faturamento;

	public Servico() {
		ativo = false;
	}

	public void ativa() {
		this.ativo = true;
	}

	public void desativa() {
		this.ativo = false;
	}

	public boolean getAtivo() {
		return ativo;
	}

	public String getDescricao() {
		return descricao;
	}

	public BigDecimal getFaturamento() {
		return faturamento;
	}

	public Long getId() {
		return id;
	}

	public BigDecimal getValor() {
		return valor;
	}

	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public void setFaturamento(BigDecimal faturamento) {
		this.faturamento = faturamento;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public void setValor(BigDecimal valor) {
		this.valor = valor;
	}

}
